// arrows in main
// disparo de las flechas


int fflecha_speed  = 5;                                                          // velocidad de las flechas  
 
void crea_fflecha()
{
    fflecha.createxturas ("sprites/fflecha.dat");
    /* clear fballs coordinate array */
    for (int i=0;i<6;i++)
    {
        fflechas[i].x=0;                                                        // x 
        fflechas[i].y=0;                                                        // y
        fflechas[i].activo=false;                                                  // desactiva los sprites
    }
}    

void farrow_fire()
{
   
   static int iTmpDisparo;                                                      // variable para calcular el tiempo
   int firedelay=750;
   if ( (SDL_GetTicks() - iTmpDisparo) < firedelay)  return;                    // sale si es menor, velocidad de disparo en 350
   iTmpDisparo = SDL_GetTicks();                                                // averigua el tiempo transcurrido
   for (int i=0;i<6;i++)
    if (fflechas[i].activo==false)                                                       // si es 0 deja disparar
       {
         Sflechaf.play();      
         fflechas[i].activo=true;                                               // activa la flecha en el disparo
         fflechas[i].y=int(popolon.y)-32;                                       //y
         fflechas[i].x=int(popolon.x)+16;                                       // x
         break;                                                                 // sale del bucle
        }                     
}

void farrows_move (double mappos)                                               // meve el sprite solo si esta activo.
{ 
  SDL_Rect recta; // arrow
  SDL_Rect rectb; // enemy       
  for (int i=0;i<6;i++)
    if (fflechas[i].activo==true) 
    {
     if (fflechas[i].y>-1)                                                      // comprueba si esta dentro de los limites de la pantalla 
      fflechas[i].y-=fflecha_speed;                                             // mueve la flecha
       else 
        {
         fflechas[i].activo=false;
         continue;
        }   
    switch (arma)
       {
        case 8: fflecha.y=fflechas[i].y;
                fflecha.x=fflechas[i].x;
                fflecha.pinta();
                fflecha.rect.w=8;
                break;
        case 9: fflecha.y=fflechas[i].y;
                fflecha.x=fflechas[i].x-10;
                fflecha.pinta();
                fflecha.y=fflechas[i].y;
                fflecha.x=fflechas[i].x+10;
                fflecha.pinta();
                fflecha.rect.w=24;
                break;
       }
     /* chequea colisiones */  
     for (int a=0;a<6;a++)    // use the same for for all arrays of size 6
     {
      if (fflechas[i].activo==true)                                                // meuve solo las flechhas que esten activas
      {
        switch (arma)                                                          
        {
            case 8: recta.x=fflechas[i].x;recta.w=fflecha.w;
                    recta.y=fflechas[i].y;recta.h=fflecha.h;                            
                    break;
            case 9: recta.x=fflechas[i].x-10;recta.w=24;
                    recta.y=fflechas[i].y;recta.h=fflecha.h;                            
                    break;
        }
        /* colision con medussa */
        if (medusaestado==1)
            if (fflecha.collision(&medhead.rect))
            {
                fflechas[i].activo=false;
                medusavida--;
                Sbosshit.play();
            }
        if (muerteestado==1)
            if (fflecha.collision(&deathhead.rect))
            {
                fflechas[i].activo=false;
                muertevida--;
                Sbosshit.play();
            }
        
       if (optionw.visible==true) 
         if (fflecha.collision(&optionw.rect))                                     
           {
            if (woptiondir<1) woptiondir=1;
            else woptiondir=-1;
            Soptionclik.play();
            if (optionw.animpos<2) optionw.animpos=2.0;                         
            else optionw.animpos+=1;
            if (arma==8 && optionw.animpos==8) optionw.animpos=9;               // si tienes flechas simples salen dobles.
            if (optionw.animpos==7) optionw.animpos=9;               // si son cuchillos
            if (optionw.animpos==3) optionw.animpos=4;               // si son flechas de fuego
            if (optionw.animpos==7) optionw.animpos=9;               // si son cuchillos
            if (optionw.animpos>9) optionw.animpos=0;
            fflechas[i].activo=false;                                           // desactiva la flecha 
           } // if       
        /* collison with option */
        if (option.visible==true)
         if (fflecha.collision(&option.rect))                                     
           {
            if (optiondir<1) optiondir=1;
            else optiondir=-1;
            Soptionclik.play();
            fflechas[i].activo=false;                                           // desactiva la flecha              
            option.animpos+=1;
            if (option.animpos>4) option.animpos=0;
            option.animstart=int(option.animpos);
           }  
                
        /* colision con nubes */
        if (a<3 && cloudss[a].hit==false)                                             
        {
            rectb.x=int(cloudss[a].x);rectb.w=clouds.w;
            rectb.y=int(cloudss[a].y);rectb.h=clouds.h;
            if (fflecha.colbox(&recta,&rectb))
            {
                Sras.play();
                cloudss[a].hit=true;
                cloudss[a].dir=0;
                if (cloudss[a].x>(popolon.x)+10) cloudss[a].dir=-((cloudss[a].x / popolon.x)  );
                if (cloudss[a].x<(popolon.x)-10) cloudss[a].dir= (popolon.x /cloudss[a].x) ;
            }
        } /* clouds collision check end */        
        
        /* bats */
        if (batss[a].activo==true)
        {
         rectb.x=int(batss[a].x);rectb.w=bats.w;
         rectb.y=int(batss[a].y);rectb.h=bats.h;  
         if (fflecha.colbox(&recta,&rectb))                                       // if collision exists 
          {
            Sras.play();
            for (int b=0;b<128;b++) 
             if (rass[b].activo==false) 
              {
               rass[b].activo=true;
               rass[b].y=fflechas[i].y-recta.h*2;                               // ras y position = arrowposy- sprite.h
               rass[b].x=fflechas[i].x-recta.w;                                 // x
               break;
              }
            batss[a].activo=false;                                                     // clear bat in pos
            puntos+=100;                                                         // suma puntos
           } //  if
         } /* check end */
        if (batss_spr[a].activo==true)
        {
         rectb.x=int(batss_spr[a].x);rectb.w=bats.w;
         rectb.y=int(batss_spr[a].y);rectb.h=bats.h;  
         if (fflecha.colbox(&recta,&rectb))                                       // if collision exists 
          {
            Sras.play();
            for (int b=0;b<128;b++) 
             if (rass[b].activo==false) 
              {
               rass[b].activo=true;
               rass[b].y=fflechas[i].y-recta.h*2;                               // ras y position = arrowposy- sprite.h
               rass[b].x=fflechas[i].x-recta.w;                                 // x
               break;
              }
            batss_spr[a].activo=false;                                                     // clear bat in pos
            puntos+=100;                                                         // suma puntos
           } //  if
         } /* check end */
        if (batss_spl[a].activo==true)
        {
         rectb.x=int(batss_spl[a].x);rectb.w=bats.w;
         rectb.y=int(batss_spl[a].y);rectb.h=bats.h;  
         if (fflecha.colbox(&recta,&rectb))                                       // if collision exists 
          {
            Sras.play();
            for (int b=0;b<128;b++) 
             if (rass[b].activo==false) 
              {
               rass[b].activo=true;
               rass[b].y=fflechas[i].y-recta.h*2;                               // ras y position = arrowposy- sprite.h
               rass[b].x=fflechas[i].x-recta.w;                                 // x
               break;
              }
            batss_spl[a].activo=false;                                                     // clear bat in pos
            puntos+=100;                                                         // suma puntos
           } //  if
         } /* check end */     
        if (batss_zz[a].activo==true)
        {
         rectb.x=int(batss_zz[a].x);rectb.w=bats.w;
         rectb.y=int(batss_zz[a].y);rectb.h=bats.h;  
         if (fflecha.colbox(&recta,&rectb))                                       // if collision exists 
          {
            Sras.play();
            for (int b=0;b<128;b++) 
             if (rass[b].activo==false) 
              {
               rass[b].activo=true;
               rass[b].y=fflechas[i].y-recta.h*2;                               // ras y position = arrowposy- sprite.h
               rass[b].x=fflechas[i].x-recta.w;                                 // x
               break;
              }
            batss_zz[a].activo=false;                                                     // clear bat in pos
            puntos+=100;                                                         // suma puntos
           } //  if
         } /* check end */
       if (bones[a].activo==true)
        {
         /* bones rect */
         rectb.x=int(bones[a].x);
         rectb.y=int(bones[a].y);
         rectb.w=32;
         rectb.h=32;    
         /* check colision */      
         if (fflecha.colbox(&recta,&rectb) && bones[a].assm==true)                                     
          {
            bones[a].hit++;
            bones[a].assm=false;
            bones[a].head=bones[a].x;
            bones[a].body=bones[a].x;
            if (bones[a].hit==3)  // MAX HITS 
            {
                Sras.play();
                for (int b=0;b<128;b++) 
                 if (rass[b].activo==false) 
                 {
                  rass[b].activo=true;
                  rass[b].y=int(bones[a].y);
                  rass[b].x=int(bones[a].x);
                  break;
                 }
                bones[a].activo=false;
                bones[a].hit=0;                                                                                               
                puntos+=100;
            }
          } // if
        }
       
       if (bugs[a].activo==true)
       {
        rectb.x=bugs[a].x;rectb.y=bugs[a].y;rectb.w=32;rectb.h=32;    
        if (fflecha.colbox(&recta,&rectb))                                     
         {
           Sras.play();
           for (int b=0;b<128;b++) 
            if (rass[b].activo==false) 
             {
              rass[b].activo=true;
              rass[b].y=bugs[a].y;
              rass[b].x=bugs[a].x;
              break;
             }
           bugs[a].dir=0;
           bugs[a].activo=false;                                                  
           puntos+=100; 
         } // if
       }/* end check */
        /* bubles */ 
       if (bubless[a].activo==true)
       {
        rectb.x=bubless[a].x;rectb.y=bubless[a].y;rectb.w=32;rectb.h=32;    
        if (fflecha.colbox(&recta,&rectb))                                     
         {
           Sras.play();
           for (int b=0;b<128;b++) 
            if (rass[b].activo==false) 
             {
              rass[b].activo=true;
              rass[b].y=bubless[a].y;
              rass[b].x=bubless[a].x;
              break;
             }
           bubless[a].activo=false;                                                  
           puntos+=100; 
         } // if
       }/* end check */
        /* collision with Knights */
       if (knights[a].activo==true)
       {
        rectb.x=knights[a].x;rectb.y=knights[a].y;rectb.w=32;rectb.h=32; 
        if (fflecha.colbox(&recta,&rectb))                                     
         {
          Sras.play();
          for (int b=0;b<128;b++) 
           if (rass[b].activo==false) 
              {
               rass[b].activo=true;
               rass[b].y=knights[a].y; // y ras position
               rass[b].x=knights[a].x; // x ras position
               break;
               }
             puntos+=500;
             knights[a].activo=false;                                                   // turn sprite off
             knights[a].hits=0;                                                     // resert hit counter      
          }// if end
        } /* check end */
       }
      } // for
    } 
}    
